// 封装axios
import axios from 'axios'
import router from '../router'
import { Toast } from 'vant';

// 缺省页面
const errPage = [404, 500]

// 拦截请求
axios.interceptors.request.use(config => {
    // 获取token
    const token = localStorage.getItem('token')

    if (token) {
        // 请求头 添加token
        config.headers.authorization = `Bearer ${token}`
    }

    return config
})

// 拦截响应
// config（回调函数） 接收网络响应为2xx 的返回值
// err（回调函数） 接收网络响应为非2xx 的返回值
axios.interceptors.response.use(config => {   
    return {
        data: config.data.data || config.data.checkCode || config.data.token,
        msg: config.data.msg || '请求成功'
    }

}, err => {
    const { status } = err.response
    
    // 错误提示
    Toast.fail({
        message: status,
        position: 'top',
    })

    // 如果缺省页面存在  就跳到对应的缺省页面
    if (errPage.some(item => item === status)) {
        router.push(`/${status}`)
    } else {
        // 不存在缺省页面 统一跳到404
        router.push(`/404`)
    }
})

export default axios